package com.example.tliasfight.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class JwtUtils
{
    private static String sighKey="itheima";//签名密钥
    private static long expire=43200000L;//数值是：pow(4.32,5)，如果用在毫秒的运算那就是12hour，用在秒的运算12000hour
    public static String generateJwt(Map<String,Object> clams)//自定义的信息是放在Map里面的，他把map里面的内容转换成jwt字符串
    {
            String jwt= Jwts.builder().signWith(SignatureAlgorithm.HS256,sighKey)
                    .addClaims(clams)
                    .setExpiration(new Date(System.currentTimeMillis()+expire))
                    .compact();
        return jwt;
    }
    public static Claims parseJwt(String jwt)//只要能成功解析，就说明没有失效也没有篡改。也算校验成功了。目前在我看来这个Claims结果跟map差不多，反正只需要看他报不报异常，不报异常就算校验成功了
    {
            Claims claims=Jwts.parser()
                    .setSigningKey(sighKey)//指定签名密钥
                    .parseClaimsJws(jwt)
                    .getBody();
            return claims;
    }

}
